// pages/myConsultation/myConsultation.js
import { getMyBooking } from "../../api/person"

Page({

  /**
   * 页面的初始数据
   */
  data: {
    completedList: [],  // 已结束咨询列表
    loading: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getCompletedConsultation();
  },

  // 获取已结束的咨询数据
  getCompletedConsultation() {
    this.setData({ loading: true });
    const studentInfo = wx.getStorageSync('studentInfo');
    const studentId = studentInfo ? studentInfo.id : null;
    getMyBooking(studentId).then(res => {
      console.log('咨询数据:', res);
      // 过滤出已结束的咨询记录
      this.processCompletedConsultation(res || []);
    }).catch(err => {
      console.error('获取咨询数据失败:', err);
      wx.showToast({
        title: '数据加载失败',
        icon: 'none'
      });
    }).finally(() => {
      this.setData({ loading: false });
    })
  },

  // 处理已结束的咨询数据
  processCompletedConsultation(data) {
    const now = new Date();
    const completedList = [];

    data.forEach(item => {
      // 解析咨询日期和时间
      const endDateTime = this.parseDateTime(item.consultDate, item.endTime);
      
      // 判断咨询是否已结束：过了预约结束时间或者咨询状态为已结束
      const isTimeEnded = endDateTime && now > endDateTime;
      const isConsultCompleted = item.consultStatus === 2; // 假设2表示咨询已结束状态
      
      if (isTimeEnded || isConsultCompleted) {
        // 处理咨询类型文本
        item.consultTypeText = this.getConsultTypeText(item.consultType);
        
        // 处理咨询地点显示
        item.locationText = this.getLocationText(item);
        
        // 设置状态
        item.statusText = '已结束';
        item.statusClass = 'completed';
        
        completedList.push(item);
      }
    });

    // 按时间倒序排列，最新的在前面
    completedList.sort((a, b) => {
      const timeA = this.parseDateTime(a.consultDate, a.endTime);
      const timeB = this.parseDateTime(b.consultDate, b.endTime);
      return timeB - timeA;
    });

    this.setData({
      completedList: completedList
    });
  },

  // 获取咨询类型文本
  getConsultTypeText(consultType) {
    const typeMap = {
      1: '电话咨询',
      0: '线下咨询',
      2: '视频咨询',
      3: '在线聊天'
    };
    return typeMap[consultType] || '其他咨询';
  },

  // 获取咨询地点文本
  getLocationText(item) {
    if (item.consultType === 0 && item.consultantOfficeLocation) {
      return `地点：${item.consultantOfficeLocation}`;
    } 
    return '';
  },

  // 解析日期和时间
  parseDateTime(dateStr, timeStr) {
    if (!dateStr || !timeStr) return null;
    
    try {
      // 处理中文日期格式 "2025年11月02日"
      let normalizedDateStr = dateStr;
      if (dateStr.includes('年') && dateStr.includes('月') && dateStr.includes('日')) {
        normalizedDateStr = dateStr
          .replace('年', '-')
          .replace('月', '-')
          .replace('日', '');
      }
      
      // 解析日期
      const [year, month, day] = normalizedDateStr.split('-').map(Number);
      
      // 解析时间
      const [hours, minutes] = timeStr.split(':').map(Number);
      
      // 创建日期对象
      const dateTime = new Date(year, month - 1, day, hours, minutes, 0);
      
      return dateTime;
    } catch (error) {
      console.error('解析日期时间错误:', error);
      return null;
    }
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.getCompletedConsultation();
    wx.stopPullDownRefresh();
  }
})